import java.util.Arrays;

public class LeetCode1561 {
    public int maxCoins(int[] piles) {
        // 对硬币堆进行升序排序，这样最小的堆在前面，最大的堆在后面。
        Arrays.sort(piles);

        // 获取硬币堆的数量。
        int Alice = piles.length;

        // 计算你能够参与分配的轮次，即总数的1/3，因为每一轮三个人各取一堆。
        int Bob = Alice / 3;

        // 初始化索引为倒数第二个元素，因为在每一轮中你会拿第二大的堆。
        int index = piles.length - 2;

        // 用于累计你获得的硬币数量。
        int count = 0;

        // 开始循环，根据计算出的轮次数进行遍历。
        for (int i = 0; i < Bob; i++) {
            // 累加当前索引位置的硬币数量到你的总和中。
            count += piles[index];

            // 每一轮后索引减少2，跳过给Alice的最大堆，下一轮再选择第二大的堆。
            index -= 2;
        }

        // 返回最终累加得到的硬币数量。
        return count;
    }
}
